package com.danger.Activity.Util;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonParser;
import com.google.gson.reflect.TypeToken;

public class GsonJson {

	public static <T> T parseJson(String json, Class<T> cla) {
		T t = null;
		try {
			Gson gson = new Gson();
			t = gson.fromJson(json, cla);
			return t;
		} catch (Exception e) {
			t = null;
		}
		return t;
	}

	public static <T> List<T> parseElementJson(String json, Class<T> clazz) throws Exception {
		List<T> list = new ArrayList<T>();
		try {
			JsonArray array = new JsonParser().parse(json).getAsJsonArray();
			for (final JsonElement elem : array) {
				list.add(new Gson().fromJson(elem, clazz));
			}
		} catch (Exception e) {
			list = null;
		}
		return list;
	}

	public static List<String> getList(String json) {
		List<String> list = new ArrayList<String>();
		try {
			Gson gson = new Gson();
			list = gson.fromJson(json, new TypeToken<List<String>>() {
			}.getType());
		} catch (Exception e) {
			e.printStackTrace();
		}
		return list;
	}

	public static List<Map<String, Object>> listKeyMap(String json) {
		List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
		try {
			Gson gson = new Gson();
			list = gson.fromJson(json, new TypeToken<List<Map<String, Object>>>() {
			}.getType());
		} catch (Exception e) {
			e.printStackTrace();
		}
		return list;
	}
}
